The present disclosure relates generally to distributed function execution, and more specifically, to distributed function execution for hybrid systems using OpenCL.
Open Computing Language (OpenCL) is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, Graphics Processing Units (GPUs), and other processors. OpenCL includes a language for writing kernels, which are functions that execute on OpenCL devices, and application programming interfaces (APIs) that are used to define and then control the platforms. OpenCL provides parallel computing using task-based and data-based parallelism.
Since OpenCL was designed to be used with a non-distributed system, OpenCL is not designed to optimize data transmission between the various processors and buffers used by the devices in the system. In addition, some function calls, such as function calls to scientific function libraries requiring parallel processing of algebraic functions, may not be supported by a computing system, resulting in an error when scientific functions are encountered in an application.